Очистка базы данных Joomla 3 - избавляемся от версий материалов

Приветствую Вас на страницах сайта Joom4all. Сегодня поговорим о том, как оптимизировать базу данных популярной системы управления контентом Joomla 3.

Все мы знаем (возможно кто-то об этом узнает из этой статьи), что с увеличением размера базы данных растет нагрузка на сервер, кроме того уменьшается доступное дисковое пространство на хостинге. Ну и что скажите Вы, не зря же мы платим деньги за хостинг. Так-то оно так, но стоимость хостинга напрямую зависит от Ваших потребностей и чем выше нагрузка на сайт, тем больше Вам придется за него платить.

Если финансовая составляющая Вас особо не интересует, и Вы готовы платить неограниченные деньги за работу сайта, тогда задумайтесь о другой проблеме - скорости загрузки сайта. База данных, в которой накопилось достаточное количество мусора, не лучшим образом сказывается на скорости загрузки страниц сайта, а современные пользователи интернета не отличаются терпеливостью и могут покинуть Ваш сайт, не дождавшись его загрузки.

В результате такая казалась бы незначительная проблема, может привести к серьезным последствиям – уменьшению количества посетителей, объемов продаж, дохода и так далее. Теперь задайте себе вопрос – а оно мне надо?

С минусами разросшейся базы данных разобрались, теперь давайте разберем причины увеличения объема базы данных в Joomla 3 и поговорим, как это исправить.

Причины сильного увеличения объема базы данных

То, что со временем база данных Joomla начинает сильно разрастаться это факт, но не всегда резкий скачек размера базы данных связан с увеличением количества материалов. В моей практике было множество случаев, когда количество материалов было неизменным, а база данных увеличивалась на глазах.

В чем кроется причина увеличения размера базы данных? Ну, во-первых это сторонние расширения, при установке которых в базе данных Joomla добавляются новые таблицы и записи. Кроме того существуют расширения которые не «заметают за собой следы» даже после их удаления – расширение удалено, а его таблицы остались в базе данных.

Другая распространенная причина это расширения, которые установлены по умолчанию в Joomla 3. Например, такие расширения как «Умный поиск», а так же версионность материалов (это не совсем расширение). Давайте рассмотрим их более подробно.

История изменений материалов и таблица jos_ucm_history

В Joomla начиная с версии 3.2, разработчики ввели новую возможность – сохранение изменений (версий) статей. Более того данная опция включена в Joomla по умолчанию.

Что дает данная возможность? Если честно, то для большинства пользователей совершенно ничего кроме увеличения объема базы данных. Суть данной функции заключается в том, что Джумла после изменения материала хранит его старые версии, и не просто одну – две, а сразу десять!

Таким образом, получается что, изменив материал 10 раз, мы получим десять его копий, которые сильно увеличивают размер базы данных. А самое неприятное в этой ситуации то, что данные хранятся в формате Json, а это значит что вместо одного символа (или буквы), мы получаем вот такой набор «\u0412». Получается, что каждый символ в материале будет заменен на 6 других, в результате каждая версия материала больше оригинала приблизительно в 6 раз, а их у нас к тому же 10 штук:

Версии материала (история изменений) которые хранятся в формате json и сильно увеличивают размер базы данных

Более подробно про кодировку Json мы поговорим в другой раз, а сейчас главное понять, что одной из главных причин увеличения объема базы данных в Joomla как раз таки является версионность материалов. Что тут можно предпринять? Ну, во-первых сократить количество копий версий материала или же отключить данную опцию вообще. Для этого необходимо перейти на страницу «Настройки менеджера материалов» (нажать на кнопку «Настройки» на странице «Менеджера материалов») и перейти на вкладку «Форма редактирования»:

Для того чтобы Joomla не хранила версии материалов необходимо отключить эту функцию на странице настройки менеджера материалов

В большинстве случаев нет необходимости хранить более старые версии материала в базе данных, поэтому я предлагаю отключить данную опцию вообще, а если Вам это все же необходимо, то сократите количество версий до минимума.

Но не все так просто, даже если Вы отключите функцию сохранения версий материалов, в базе данных все же останутся ранее созданные версии. Пользы от них в данном случае нет никакой и лучше от них избавиться. Для этого необходимо перейти в phpMyAdmin, найти таблицу jos_ucm_history, в которой хранятся версии изменений материалов, и очистить её (вместо префикса jos может быть любой другой указанный Вами при установке Joomla):

Очистка таблицы jos_ucm_history в Joomla 3.7 для сокращения размера базы данных

Для наглядности на скриншоте выше я показал размер той самой таблицы jos_ucm_history, которая хранит историю изменений, и таблицы с материалами jos_content. Размер этих таблиц отличается более чем в два раза и это при том, что материалов совсем мало и они практически не редактировались.

В заключение хочу отметить, что в некоторых случаях можно сократить размер базы данных Joomla до 95%, достаточно только отключить вышеупомянутую функцию и очистить таблицу jos_ucm_history. Кроме того проверьте таблицы jos_ucm_base и jos_ucm_content (не забывайте про префикс) возможно их тоже придется чистить.

На этом, пожалуй, я закончу. В следующей статье (умный поиск и его влияние на размер базы данных) я расскажу, какие еще таблицы можно очистить в базе данных Joomla, тем самым сократив её объем еще больше.

 

Добавить комментарий


Комментарии   

Димыч
+1 #1 Димыч 13.10.2017 18:18
Спасибо. У меня база данных 41мб из них 31мб таблица _ucm_history
Цитировать
Joom4all
0 #2 Joom4all 25.10.2017 09:59
Цитирую Димыч:
Спасибо. У меня база данных 41мб из них 31мб таблица _ucm_history

Пожалуйста, рад был помочь
Цитировать
Николай
0 #3 Николай 27.10.2018 18:47
Спасибо. После очистки jos_ucm_history удалились материалы. Теперь там 404.
Что может быть не так?
Цитировать
Joom4all
0 #4 Joom4all 29.10.2018 14:49
Возможно по ошибке вычистили не ту таблицу, тут надо быть аккуратнее...
Цитировать